#include<conio.h>
#include<stdio.h>
char a[101][101];
int dir[101][101],m,n,i,j,u,v,r0,c0;
char queue[200000],first=2,last=0;
int dx[]={0,1,0,-1};
int dy[]={-1,0,1,0};
void input(){
    scanf("%d%d",&m,&n);
    for(i=1;i<=m;i++){
        scanf("%c",&u);
        for(j=1;j<=n;j++){
            scanf("%c",&u);
            if(u=='B'){
                r0=i;
                c0=j;
                a[i][j]='.';
            }else if(u=='C'){
                queue[1]=i;
                queue[2]=j;
                a[i][j]='*';
            }else a[i][j]=u;
        }
    }
}
int isOk(int x,int y){
    return x<=m && x>=1 && y>=1 && y<=n;
}
void bfs(){
    int r,c;
    do{
        u=queue[++last];
        v=queue[++last];
        for(i=0;i<=4;i++){
            r=u+dy[i];
            c=v+dx[i];
            if(isOk(r,c) && a[r][c]=='.'){
                queue[++first]=r;
                queue[++first]=c;
                dir[r][c]=dir[u][v]+1;
                a[r][c]='*';
                if((r==r0)&&(c==c0))return;
            }
        }
    }while(last<first);
}
int main(){
    input();
    bfs();
    //printf("%d",dir[r0][c0]);
    for(i=1;i<=m;i++){
        printf("\n");
        for(j=1;j<=n;j++)printf("%d\t",dir[i][j]);
    }
    getch();
    return 0;
}

